package cn.chiship.framework.upms.biz.user.pojo.dto;

import cn.chiship.framework.upms.biz.user.entity.UpmsOrganization;
import cn.chiship.sdk.core.base.constants.RegularExpressionConstants;
import cn.chiship.framework.common.constants.TipConstants;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.*;

/**
 * @author LiJian
 */
@ApiModel(value = "用户表单")
public class UpmsUserDto {

    @ApiModelProperty(value = "头像")
    private String avatar;

    @ApiModelProperty(value = "是否添加到通讯录(0 否 1 是)", required = true)
    @NotNull(message = "是否添加到通讯录" + TipConstants.NOT_EMPTY)
    @Min(0)
    @Max(1)
    private Byte isAddMailList;

    @ApiModelProperty(value = "是否内部员工", required = true)
    @NotNull(message = "是否内部员工" + TipConstants.NOT_EMPTY)
    @Min(0)
    @Max(1)
    private Byte isInner;

    @ApiModelProperty(value = "用户分类", required = true)
    @NotEmpty(message = "用户分类" + TipConstants.NOT_EMPTY)
    @Length(min = 1, max = 50)
    private String category;

    @ApiModelProperty(value = "用户名", required = true)
    @NotEmpty(message = "用户名" + TipConstants.NOT_EMPTY)
    @Length(min = 1, max = 11)
    private String userName;

    @ApiModelProperty(value = "真实姓名", required = true)
    @NotEmpty(message = "真实姓名" + TipConstants.NOT_EMPTY)
    @Length(min = 2, max = 5)
    private String realName;

    @ApiModelProperty(value = "手机号", required = true)
    @NotEmpty(message = "手机号" + TipConstants.NOT_EMPTY)
    @Length(min = 11, max = 11)
    @Pattern(regexp = RegularExpressionConstants.MOBILE, message = TipConstants.MOBILE)
    private String mobile;

    @ApiModelProperty(value = "工号")
    private String userCode;

    @ApiModelProperty(value = "授权码")
    private String authorizationCode;

    @ApiModelProperty(value = "性别")
    private Byte gender;


    @ApiModelProperty(value = "邮箱")
    private String email;

    @ApiModelProperty(value = "角色")
    private String role;

    @ApiModelProperty(value = "组织")
    @Valid
    private UpmsUserOrganizationDto userOrganizationDto;

    @ApiModelProperty(value = "直属主管")
    private String reportsTo;

    @ApiModelProperty(value = "电话")
    private String phone;

    @ApiModelProperty(value = "生日")
    private Long birthday;

    @ApiModelProperty(value = "微信号")
    private String weixin;

    @ApiModelProperty(value = "备注")
    @Length(max = 200)
    private String remarks;

    @ApiModelProperty(value = "身份证")
    private String idNumber;

    @ApiModelProperty(value = "籍贯")
    private String nativePlace;

    @ApiModelProperty(value = "文化程度")
    private String educationDegree;

    @ApiModelProperty(value = "政治面貌")
    private String politicalOutlook;

    @ApiModelProperty(value = "民族")
    private String nation;

    @ApiModelProperty(value = "学历")
    private String education;

    @ApiModelProperty(value = "婚姻状态")
    private String maritalStatus;

    @ApiModelProperty(value = "毕业学校")
    private String graduateSchool;

    @ApiModelProperty(value = "最高学位")
    private String highestDegree;

    @ApiModelProperty(value = "专业")
    private String major;

    @ApiModelProperty(value = "人员编制")
    private String staffing;

    @ApiModelProperty(value = "入职时间")
    private Long startWorkDate;

    @ApiModelProperty(value = "现居住地")
    private String currentResidence;

    @ApiModelProperty(value = "现居住地详细地址")
    private String currentAddress;

    @ApiModelProperty(value = "紧急联系人")
    private String emergencyContact;

    @ApiModelProperty(value = "紧急电话")
    private String emergencyContactMobile;

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public Byte getIsAddMailList() {
        return isAddMailList;
    }

    public void setIsAddMailList(Byte isAddMailList) {
        this.isAddMailList = isAddMailList;
    }

    public Byte getIsInner() {
        return isInner;
    }

    public void setIsInner(Byte isInner) {
        this.isInner = isInner;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getAuthorizationCode() {
        return authorizationCode;
    }

    public void setAuthorizationCode(String authorizationCode) {
        this.authorizationCode = authorizationCode;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public Byte getGender() {
        return gender;
    }

    public void setGender(Byte gender) {
        this.gender = gender;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public UpmsUserOrganizationDto getUserOrganizationDto() {
        return userOrganizationDto;
    }

    public void setUserOrganizationDto(UpmsUserOrganizationDto userOrganizationDto) {
        this.userOrganizationDto = userOrganizationDto;
    }

    public String getReportsTo() {
        return reportsTo;
    }

    public void setReportsTo(String reportsTo) {
        this.reportsTo = reportsTo;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Long getBirthday() {
        return birthday;
    }

    public void setBirthday(Long birthday) {
        this.birthday = birthday;
    }

    public String getWeixin() {
        return weixin;
    }

    public void setWeixin(String weixin) {
        this.weixin = weixin;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getIdNumber() {
        return idNumber;
    }

    public void setIdNumber(String idNumber) {
        this.idNumber = idNumber;
    }

    public String getNativePlace() {
        return nativePlace;
    }

    public void setNativePlace(String nativePlace) {
        this.nativePlace = nativePlace;
    }

    public String getEducationDegree() {
        return educationDegree;
    }

    public void setEducationDegree(String educationDegree) {
        this.educationDegree = educationDegree;
    }

    public String getPoliticalOutlook() {
        return politicalOutlook;
    }

    public void setPoliticalOutlook(String politicalOutlook) {
        this.politicalOutlook = politicalOutlook;
    }

    public String getNation() {
        return nation;
    }

    public void setNation(String nation) {
        this.nation = nation;
    }

    public String getEducation() {
        return education;
    }

    public void setEducation(String education) {
        this.education = education;
    }

    public String getMaritalStatus() {
        return maritalStatus;
    }

    public void setMaritalStatus(String maritalStatus) {
        this.maritalStatus = maritalStatus;
    }

    public String getGraduateSchool() {
        return graduateSchool;
    }

    public void setGraduateSchool(String graduateSchool) {
        this.graduateSchool = graduateSchool;
    }

    public String getHighestDegree() {
        return highestDegree;
    }

    public void setHighestDegree(String highestDegree) {
        this.highestDegree = highestDegree;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getStaffing() {
        return staffing;
    }

    public void setStaffing(String staffing) {
        this.staffing = staffing;
    }

    public Long getStartWorkDate() {
        return startWorkDate;
    }

    public void setStartWorkDate(Long startWorkDate) {
        this.startWorkDate = startWorkDate;
    }

    public String getCurrentResidence() {
        return currentResidence;
    }

    public void setCurrentResidence(String currentResidence) {
        this.currentResidence = currentResidence;
    }

    public String getCurrentAddress() {
        return currentAddress;
    }

    public void setCurrentAddress(String currentAddress) {
        this.currentAddress = currentAddress;
    }

    public String getEmergencyContact() {
        return emergencyContact;
    }

    public void setEmergencyContact(String emergencyContact) {
        this.emergencyContact = emergencyContact;
    }

    public String getEmergencyContactMobile() {
        return emergencyContactMobile;
    }

    public void setEmergencyContactMobile(String emergencyContactMobile) {
        this.emergencyContactMobile = emergencyContactMobile;
    }
}